package x.ovo.wechat.bot.common.http.response;

import lombok.Data;

import java.io.Serializable;
import java.util.Objects;
import java.util.Optional;

/**
 * ApiResponse 是一个抽象类，用作 HTTP 响应的基类。
 * 它提供了一个存储原始响应数据的字段。
 */
@Data
public abstract class ApiResponse implements Serializable {
    // 存储原始响应数据，允许子类访问。
    protected transient String raw;
    protected BaseResponse BaseResponse;

    public boolean success() {
        return Optional.ofNullable(this.BaseResponse)
                .map(x.ovo.wechat.bot.common.http.response.BaseResponse::getRet)
                .map(i -> i == 0)
                .orElse(Objects.nonNull(this.raw));
    }
}
